package demo8;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 *配置注解，主要用在不是我们自己写的哪些类上使用，自己写可以加@Component，但是对于不是我写的，就没办法去加@Component注解
 */
@Configuration//配置类注解
@ComponentScan("demo8")//在配置类上使用该注解，用于告知容器去扫描那个包
public class Config {
    /*
    @Bean注解
        当我们希望让Spring容器管理一个对象,但是该对象无法由我们添加注解@Component时,我们可以通过这种方式
        主动向容器种添加一个对象.

        做法:
        1:在配置类种定义一个方法,方法的名字无妨(见名知义即可),方法的返回值就是希望被容器管理的对象
        2:在方法种完成该对象的初始化工作并将其返回
        3:在这个方法上使用@Bean注解
          该注解的作用就是告知容器,这个方法的返回值要纳入容器管理.
          那么容器初始化时就会调用这个方法,并将返回的对象也纳入到容器种进行管理.
     */
    @Bean
    public Student initStudent(){
        return new Student();
    }
    @Bean
    public DruidDataSource initDruidDataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setUrl("jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true");
        ds.setUsername("root");
        ds.setPassword("123456");
        ds.setInitialSize(5);
        ds.setMaxActive(30);
        return ds;
    }
}
